Pre-commit এবং Post-commit হল Git-এর দুইটি ইভেন্ট ট্রিগার যা গিট রেপোজিটরি ব্যবস্থাপনায় গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি সাধারণত গিট হুকস (Git Hooks) হিসেবে পরিচিত, যা গিট কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এগুলি ব্যবহৃত হয় কোড কমিট করার আগে এবং পরে নির্দিষ্ট কাজগুলি সম্পাদন করতে। আসুন আমরা বিস্তারিতভাবে জানি:
Pre-commit Event Trigger
Pre-commit হুকটি কমিট করার আগে চলমান হয়। এটি কমিটের আগে কিছু নির্দিষ্ট কাজ চালাতে সহায়তা করে যেমন লিন্টিং, ফরম্যাটিং, বা টেস্টিং। যদি এই কাজগুলির মধ্যে কোনো একটি ব্যর্থ হয়, তাহলে গিট কমিটটি ব্লক করবে এবং ব্যবহারকারীকে সংশোধন করার জন্য একটি বার্তা দেখাবে।
সাধারণ ব্যবহার:
- কোড লিন্টিং: কোডে ভুল বা স্টাইলিং সমস্যা থাকলে গিট কমিট হতে বাধা দেবে।
- টেস্ট চালানো: কোডের সাথে সংশ্লিষ্ট টেস্টগুলো চালানো এবং যদি কোনো টেস্ট ফেল করে, তবে কমিটটি রিজেক্ট করা।
কনফিগারেশন:
- প্রথমে,
.git/hooks/ডিরেক্টরিতে গিয়েpre-commit.sampleফাইলটিpre-commitনামে কপি করুন। - এরপর,
pre-commitফাইলে আপনার লিন্টার বা টেস্ট স্ক্রিপ্টটি যুক্ত করুন।
#!/bin/sh
# উদাহরণ স্বরূপ একটি Python কোড লিন্টার চালানো
python -m flake8
- ফাইলটি চালু করুন এবং Git-এ এটি এড করুন।
Post-commit Event Trigger
Post-commit হুকটি কমিট করার পরে চলে। এটি সাধারণত কমিটের পরে কিছু অতিরিক্ত কাজ বা অ্যাকশন (যেমন, বিল্ড প্রসেস বা ডিপ্লয়মেন্ট) সম্পাদন করতে ব্যবহৃত হয়। কমিট সফলভাবে সম্পন্ন হওয়ার পর এটি কার্যকর হয়।
সাধারণ ব্যবহার:
- ডিপ্লয়মেন্ট: কোড কমিটের পরে স্বয়ংক্রিয়ভাবে কোড ডিপ্লয় করা।
- অ্যালার্ম/নোটিফিকেশন: কোন কমিট সফল হওয়ার পর টিম সদস্যদের নোটিফিকেশন পাঠানো।
কনফিগারেশন:
.git/hooks/ডিরেক্টরিতে গিয়েpost-commit.sampleফাইলটিpost-commitনামে কপি করুন।- এরপর,
post-commitফাইলে আপনার প্রয়োজনীয় স্ক্রিপ্ট বা প্রক্রিয়া যুক্ত করুন।
#!/bin/sh
# উদাহরণ স্বরূপ একটি নোটিফিকেশন স্ক্রিপ্ট চালানো
echo "A commit has been made!" | mail -s "Commit Notification" user@example.com
- ফাইলটি চালু করুন এবং Git-এ এটি এড করুন।
উপসংহার
Pre-commit এবং Post-commit হুকস গিট রেপোজিটরির কার্যক্রমকে আরও শক্তিশালী এবং স্বয়ংক্রিয় করতে সাহায্য করে। আপনি কোড কমিটের আগে এবং পরে বিভিন্ন প্রক্রিয়া ট্রিগার করতে পারবেন যা আপনার ডেভেলপমেন্ট প্রসেসকে আরো সুশৃঙ্খল ও কার্যকর করবে।
Read more